//
// Created by squbirreland on 2021/11/5.
//

#ifndef RLIB_GENERIC_H
#define RLIB_GENERIC_H

#include "../collection/array.h"

 /**
  * 交换两个数据的值
  * @param p1 指针1号
  * @param p2 指针2号
  * @param size 数据大小 务必使用sizeof
  */
void cpp_swap(void *p1, void *p2, usize size);

/**
 * 将任意结构转换为byte_arr
 * 其中发生值复制
 * @param p 需要被转换的类型实例指针
 * @param type_size 类型大小
 * @return Array* byte_arr
 */
struct Array *cpp_transfer_data(void const *p, usize type_size);

/**
 * 将被转化的byte_arr重构为原本类型
 * @param byte_array
 * @return
 */
void *cpp_transfer_back(struct Array const *byte_array);

#endif //RLIB_GENERIC_H
